<template>
  <!-- 放置一个图标 -->
  <div>
    <!-- vue-admin-template 花裤衩提供的 svg-icon 标签 -->
    <!-- 该标签的类名和 icons 中的字体图表文件名对应 -->
    <!-- 动态切换类名=>控制全屏图标的样式 -->
    <svg-icon
      :icon-class="isFull ? 'exit-fullscreen' : 'fullscreen'"
      class="fullscreen"
      @click="toggleScreen"
    />
  </div>
</template>

<script>
// 引入控制全屏的插件
import sf from 'screenfull'
export default {
  // 批量注册组件，这里一定要给name => 对应标签名
  name: 'ScreenFull',
  data () {
    return {
      isFull: false
    }
  },
  created () {
    // 监听全屏切换状态
    // 语法: screenfull.on('change',callback)
    this.onScreen()
  },
  beforeDestroy () {
    // 插件提供的方法用来解绑事件
    sf.off('change')
  },
  methods: {
    // 开启或者关闭全屏
    toggleScreen () {
      /**
       * 需求: 点击icon图标切换全屏
       * 使用技术: 选择screenfull插件 => 1. 浏览器兼容性判断(原生js要自己做兼容性处理)  2. 提供了好用简洁的方法
       *
       * 使用步骤:
       * 1. 判断兼容性=> sf.isEnabled 返回true说明当前浏览器支持，相反不支持
       * 2. 点击执行调用screenfull包里提供的方法
       */
      if (!sf.isEnabled) { // 不支持全屏功能
        return this.$message.error('浏览器不支持全屏功能，请使用谷歌浏览器！')
      }
      // 支持全屏功能
      // sf.request() => 只能实现全屏
      // sf.request()
      // sf.toggle() => 切换全屏、非全屏 => 用这个
      sf.toggle()
    },
    // 监听全屏切换状态
    onScreen () {
      sf.on('change', () => {
        // isFullscreen 插件提供的属性，为true时代表此时为全屏状态
        if (sf.isFullscreen) {
          this.isFull = true
        } else {
          // isFullscreen 为 false 时代表此时为非全屏状态
          this.isFull = false
        }
      })
    }
  }
}
</script>

<style lang="scss" scoped>
.fullscreen {
  width: 20px;
  height: 19px;
  color: #fff;
  cursor: pointer;
  margin-top: 15px;
}
</style>
